// 表单校验规则由 schema2code 生成，不建议直接修改校验规则，而建议通过 schema2code 生成, 详情: https://uniapp.dcloud.net.cn/uniCloud/schema


const validator = {
  "store_name": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "string"
      },
      {
        "minLength": 2,
        "maxLength": 20
      }
    ],
    "title": "店铺名称",
    "label": "店铺名称"
  },
  "store_icon": {
    "rules": [
      {
        "format": "array"
      },
      {
        "arrayType": "file"
      },
      {
        "maxLength": 1
      }
    ],
    "title": "店铺图标",
    "label": "店铺图标"
  },
  "store_plaque_icon": {
    "rules": [
      {
        "format": "array"
      },
      {
        "arrayType": "file"
      },
      {
        "maxLength": 1
      }
    ],
    "title": "店铺牌匾",
    "label": "店铺牌匾"
  },
  "store_category_menuId": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "array"
      },
      {
        "arrayType": "string"
      }
    ],
    "title": "店铺类型",
    "label": "店铺类型"
  },
  "commission_percentage": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      }
    ],
    "title": "店铺抽佣",
    "label": "店铺抽佣"
  },
  "store_phone": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "string"
      }
    ],
    "title": "店铺电话",
    "label": "店铺电话"
  },
  "store_work_date": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "array"
      },
      {
        "range": [
          {
            "text": "周一",
            "value": 0
          },
          {
            "text": "周二",
            "value": 1
          },
          {
            "text": "周三",
            "value": 2
          },
          {
            "text": "周四",
            "value": 3
          },
          {
            "text": "周五",
            "value": 4
          },
          {
            "text": "周六",
            "value": 5
          },
          {
            "text": "周日",
            "value": 6
          }
        ]
      }
    ],
    "title": "营业日期",
    "defaultValue": [
      0
    ],
    "label": "营业日期"
  },
  "store_work_time": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "array"
      }
    ],
    "title": "营业时段",
    "label": "营业时段"
  },
  "store_delivery_time": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "array"
      }
    ],
    "title": "配送时段",
    "label": "配送时段"
  },
  "store_food_finish_time": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      },
      {
        "range": [
          {
            "text": "20分钟内",
            "value": 1200000
          },
          {
            "text": "30分钟内",
            "value": 1800000
          },
          {
            "text": "40分钟内",
            "value": 2400000
          },
          {
            "text": "50分钟内",
            "value": 3000000
          },
          {
            "text": "60分钟内",
            "value": 3600000
          }
        ]
      }
    ],
    "title": "出餐时间",
    "defaultValue": 1200000,
    "label": "出餐时间"
  },
  "store_food_pack_fee": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      },
      {
        "range": [
          {
            "text": "0元",
            "value": 0
          },
          {
            "text": "1元",
            "value": 100
          },
          {
            "text": "2元",
            "value": 200
          },
          {
            "text": "3元",
            "value": 300
          },
          {
            "text": "4元",
            "value": 400
          },
          {
            "text": "5元",
            "value": 500
          },
          {
            "text": "6元",
            "value": 600
          },
          {
            "text": "7元",
            "value": 700
          },
          {
            "text": "8元",
            "value": 800
          },
          {
            "text": "9元",
            "value": 900
          },
          {
            "text": "10元",
            "value": 1000
          }
        ]
      }
    ],
    "title": "餐具费用",
    "defaultValue": 0,
    "label": "餐具费用"
  },
  "store_food_delivery_fee": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      },
      {
        "range": [
          {
            "text": "0元",
            "value": 0
          },
          {
            "text": "1元",
            "value": 100
          },
          {
            "text": "2元",
            "value": 200
          },
          {
            "text": "3元",
            "value": 300
          },
          {
            "text": "4元",
            "value": 400
          },
          {
            "text": "5元",
            "value": 500
          },
          {
            "text": "6元",
            "value": 600
          },
          {
            "text": "7元",
            "value": 700
          },
          {
            "text": "8元",
            "value": 800
          },
          {
            "text": "9元",
            "value": 900
          },
          {
            "text": "10元",
            "value": 1000
          }
        ]
      }
    ],
    "title": "基础配送费",
    "defaultValue": 0,
    "label": "基础配送费"
  },
  "store_start_delivery_money": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      }
    ],
    "title": "起送金额",
    "label": "起送金额"
  },
  "store_address_info": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "string"
      }
    ],
    "title": "店铺地址",
    "label": "店铺地址"
  },
  "store_notice": {
    "rules": [
      {
        "format": "string"
      }
    ],
    "title": "店铺公告",
    "label": "店铺公告"
  },

  "school_address_xy": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "array"
      },
      {
        "arrayType": "double"
      }
    ],
    "title": "地图经纬坐标",
    "label": "地图经纬坐标"
  },
  "work_status": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      },
      {
        "range": [
          {
            "text":"营业",
            "value":0
          },
          {
            "text":"休息",
            "value":1
          }
        ]
      }
    ],
    "title": "营业或休息",
    "defaultValue": 0,
    "label": "营业或休息"
  },
  "enable_status": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "int"
      },
      {
        "range": [
          {
            "text":"审核通过",
            "value":0
          },
          {
            "text":"审核失败",
            "value":1
          },
          {
            "text":"正在审核",
            "value":2
          },
          {
            "text":"异常店铺",
            "value":3
          }
        ]
      }
    ],
    "title": "店铺状态",
    "defaultValue": 0,
    "label": "店铺状态"
  },
  "city_code": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "string"
      }
    ],
    "title": "所属城市",
    "label": "所属城市"
  },
  "city_id_array": {
    "rules": [
      {
        "required": true
      },
      {
        "format": "array"
      },
      {
        "arrayType": "object"
      }
    ],
    "title": "店铺城市信息",
    "label": "店铺城市信息"
  },
}

const enumConverter = {
  'work_status_valuetotext':{
    "0": "营业",
    "1": "休息"
  },
  'enable_status_valuetotext':{
    "0": "审核通过",
    "1": "审核失败",
    "2": "正在审核",
    "3": "异常店铺"
  },
  
  "store_work_date_valuetotext": [
    {
      "text": "周一",
      "value": 0
    },
    {
      "text": "周二",
      "value": 1
    },
    {
      "text": "周三",
      "value": 2
    },
    {
      "text": "周四",
      "value": 3
    },
    {
      "text": "周五",
      "value": 4
    },
    {
      "text": "周六",
      "value": 5
    },
    {
      "text": "周日",
      "value": 6
    }
  ],
  "store_food_finish_time_valuetotext": {
    "1200000": "20分钟内",
    "1800000": "30分钟内",
    "2400000": "40分钟内",
    "3000000": "50分钟内",
    "3600000": "60分钟内"
  },
  "store_food_pack_fee_valuetotext": {
    "0": "0元",
    "100": "1元",
    "200": "2元",
    "300": "3元",
    "400": "4元",
    "500": "5元",
    "600": "6元",
    "700": "7元",
    "800": "8元",
    "900": "9元",
    "1000": "10元"
  },
  "store_food_delivery_fee_valuetotext": {
    "0": "0元",
    "100": "1元",
    "200": "2元",
    "300": "3元",
    "400": "4元",
    "500": "5元",
    "600": "6元",
    "700": "7元",
    "800": "8元",
    "900": "9元",
    "1000": "10元"
  }
}

function filterToWhere(filter, command) {
  let where = {}
  for (let field in filter) {
    let { type, value } = filter[field]
    switch (type) {
      case "search":
        if (typeof value === 'string' && value.length) {
          where[field] = new RegExp(value)
        }
        break;
      case "select":
        if (value.length) {
          let selectValue = []
          for (let s of value) {
            selectValue.push(command.eq(s))
          }
          where[field] = command.or(selectValue)
        }
        break;
      case "range":
        if (value.length) {
          let gt = value[0]
          let lt = value[1]
          where[field] = command.and([command.gte(gt), command.lte(lt)])
        }
        break;
      case "date":
        if (value.length) {
          let [s, e] = value
          let startDate = new Date(s)
          let endDate = new Date(e)
          where[field] = command.and([command.gte(startDate), command.lte(endDate)])
        }
        break;
      case "timestamp":
        if (value.length) {
          let [startDate, endDate] = value
          where[field] = command.and([command.gte(startDate), command.lte(endDate)])
        }
        break;
    }
  }
  return where
}

export { validator, enumConverter, filterToWhere }
